package com.tbit.main.dao.core;

import com.tbit.main.pojo.MachineBorrow;
import com.tbit.main.pojo.VO.LongOrderTimeVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 设备最后借出
 *
 * @author Leon
 * 2019年11月11日 上午10:36:54
 */
public interface MachineBorrowDao {

    /**
     * 根据设备id查询
     *
     * @param machineId
     * @return
     */
    MachineBorrow getByMachineId(Integer machineId);

    /**
     * 根据设备id查询
     *
     * @param machineIds
     * @return
     */
    List<MachineBorrow> getByMachineIds(@Param("machineIds") String machineIds);

    /**
     * 根据代理商id查询
     *
     * @param accountId
     * @return
     */
    List<MachineBorrow> getByAccountId(Integer accountId);

    /**
     * 根据分区id查询
     *
     * @param regionId
     * @return
     */
    List<MachineBorrow> getByRegionId(@Param("regionId") String regionId);

    /**
     * 获取所有骑行中车辆
     *
     * @return
     */
    List<MachineBorrow> getAll();

    /**
     * 获取运营区域内的在骑数
     *
     * @return
     */
    List<Map<String, Object>> getGroupByAccountId();

    /**
     * 获取分区内的在骑数
     *
     * @return
     */
    List<Map<String, Object>> getGroupByRegionId(@Param("regionId") String regionId);

    /**
     * 根据站点查询在骑数
     *
     * @param parkPointId
     * @return
     */
    Integer getByParkPointId(Integer parkPointId);

    /**
     * 根据运营区域查询在骑数量
     *
     * @param accountId
     * @return
     */
    Integer getByAccountIdCount(Integer accountId);


    /**
     * 根据用户id获取骑行信息
     *
     * @param userId
     * @return
     */
    MachineBorrow getByUserId(Integer userId);

    /**
     * 查询设备是否存在借车
     *
     * @param list
     * @return
     */
    List<Integer> getExist(@Param("list") List<Integer> list);

    /**
     * 查询设备借车时长
     * @param machineIdList 设备id
     * @param time  配置时间 分钟
     * @return List<LongOrderTimeVO>
     */
    List<LongOrderTimeVO> getLongOrderTime(@Param("machineIdList")List<Integer> machineIdList);
}